e31f2d5df6e52758d61934d7e34420f77ef84d7b,Source/com/drew/imaging/png/PngMetadataReader.java,PngMetadataReader,processChunk,#Metadata#PngChunk#,97

Before Change


            metadata.addDirectory(directory);
        } else if (chunkType.equals(PngChunkType.iCCP)) {
            SequentialReader reader = new SequentialByteArrayReader(bytes);
            String profileName = reader.getNullTerminatedString(79);
            PngDirectory directory = new PngDirectory(PngChunkType.iCCP);
            directory.setString(PngDirectory.TAG_ICC_PROFILE_NAME, profileName);
            byte compressionMethod = reader.getInt8();
            if (compressionMethod == 0) {
                // Only compression method allowed by the spec is zero: deflate
                // This assumes 1-byte-per-char, which it is by spec.
                int bytesLeft = bytes.length - profileName.length() - 2;
                byte[] compressedProfile = reader.getBytes(bytesLeft);
                InflaterInputStream inflateStream = new InflaterInputStream(new ByteArrayInputStream(compressedProfile));
                new IccReader().extract(new RandomAccessStreamReader(inflateStream), metadata, directory);

After Change


            metadata.addDirectory(directory);
        } else if (chunkType.equals(PngChunkType.iTXt)) {
            SequentialReader reader = new SequentialByteArrayReader(bytes);
            byte[] keywordBytes = reader.getNullTerminatedBytes(79);
            byte compressionFlag = reader.getInt8();
            byte compressionMethod = reader.getInt8();
            // TODO we currently ignore languageTagBytes and translatedKeywordBytes
            byte[] languageTagBytes = reader.getNullTerminatedBytes(bytes.length);
            byte[] translatedKeywordBytes = reader.getNullTerminatedBytes(bytes.length);
            int bytesLeft = bytes.length - keywordBytes.length - 1 - 1 - 1 - languageTagBytes.length - 1 - translatedKeywordBytes.length - 1;
            byte[] textBytes = null;
            if (compressionFlag == 0) {
                textBytes = reader.getNullTerminatedBytes(bytesLeft);